/**
 * 游游的水果大礼包
 *
 * 题目描述
 * 游游有n个苹果，m个桃子。她可以把2个苹果和1个桃子组成价值
 * a元的一号水果大礼包，也可以把1个苹果和2个桃子组成价值
 * b元的二号水果大礼包。游游想知道，自己最多能组成多少价值总和的大礼包？
 *
 * 输入描述:
 * 四个正整数
 * n,m,a,b，用空格隔开。分别代表苹果的数量、桃子的数量、一号大礼包价值、二号大礼包价值。
 * 1≤n,m,a,b≤10^6
 *
 * 输出描述:
 * 一个整数，代表大礼包的最大价值总和。
 */

import java.util.Scanner;

/**
 * 1. 动态规划不能解决这个问题的所有案例, 会超出空间限制
 * dp[i][j] : 有 i 个苹果, j 个桃子的最大利润
 * 时间复杂度 : O(n ^ 2)
 * 空间复杂度 : O(n ^ 2)
 *
 * 2. 枚举
 * 时间复杂度 : O(n)
 * 空间复杂度 : O(1)
 */

public class Main {

    // ******************************************************************
    // 1.动态规划
    public static void main1(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt(), m = in.nextInt();
        int a = in.nextInt(), b = in.nextInt();

        long[][] dp = new long[n + 1][m + 1];

        // 初始化, 这里我们初始化两排, 一个是 0, 一个是 1, 这样后面算的时候不会发生数组下标越界
        for (int i = 0; i <= n; i++) {
            dp[i][0] = 0;
            dp[i][1] = a;
        }

        for (int j = 0; j <= m; j++) {
            dp[0][j] = 0;
            dp[1][j] = b;
        }

        // 这里有几个特例, 初始化一下
        dp[0][1] = 0;
        dp[1][0] = 0;
        dp[1][1] = 0;

        for (int i = 2; i <= n; i++) {
            for (int j = 2; j <= m; j++) {

                // 状态转移方程
                dp[i][j] = Math.max(dp[i - 2][j - 1] + a, dp[i - 1][j - 2] + b);
            }
        }

        // 返回结果
        System.out.println(dp[n][m]);
    }

    // ******************************************************
    // 2. 枚举
    // 这里贪心很容易想到, 但是贪心是错的
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int n = in.nextInt(), m = in.nextInt();
        int a = in.nextInt(), b = in.nextInt();

        long ret = 0;

        // 这里枚举礼包1 的数量
        for (int i = 0; i <= Math.min(n / 2, m); i++) {

            // 在礼包1 的数量枚举成功的情况下枚举 礼包 2 的数量
            int j = Math.min((n - i * 2), (m - i) / 2);

            // 结果记得要转化为 long 类型
            ret = Math.max((long)i * a + (long)j * b, ret);
        }

        System.out.println(ret);
    }
}